qx.Class.define("caraffa.forms.BalancesCarga",
{
	extend : qx.ui.form.ow.FormTab,
	construct : function ()
	{
		this.base(arguments, "id_balances_cargas", "Carga de Balances");
		
		var model = new qx.ui.table.model.Simple();
		model.setColumns(["cod_planilla_cobro", "Obra Social", "Plan", "Factura", "Fecha y Hora", "Monto Cobrado", "Ingresos", "Egresos"]);
		this._grdPlanillas = new qx.ui.table.Table(model);
		
		this._grdPlanillas.getTableColumnModel().setColumnVisible(0,false);
		this._grdPlanillas.setColumnWidth(0, 30);
		this._grdPlanillas.setColumnWidth(1, 150);
		this._grdPlanillas.setColumnWidth(2, 150);
		this._grdPlanillas.setColumnWidth(3, 100);
		this._grdPlanillas.setColumnWidth(4, 150);
		this._grdPlanillas.setColumnWidth(5, 120);
		this._grdPlanillas.setColumnWidth(6, 120);
		this._grdPlanillas.setColumnWidth(7, 120);

		this._grdPlanillas.setWidth(950);
		this._grdPlanillas.setHeight(230);
		this._grdPlanillas.setStatusBarVisible(false);
		this._grdPlanillas.setColumnVisibilityButtonVisible(false);
		this._grdPlanillas.setShowCellFocusIndicator(true);
		
		
		var model = new qx.ui.table.model.Simple();
		model.setColumns(["cod_planilla_balance", "Operacion", "Monto", "Fecha Op", "Metodo Op", "Destino", "Fecha Carga", "Estado"]);
		this._grdBalances = new qx.ui.table.Table(model);
		
		this._grdBalances.getTableColumnModel().setColumnVisible(0,false);
		this._grdBalances.setColumnWidth(0, 30);
		this._grdBalances.setColumnWidth(1, 80);
		this._grdBalances.setColumnWidth(2, 100);
		this._grdBalances.setColumnWidth(3, 100);
		this._grdBalances.setColumnWidth(4, 200);
		this._grdBalances.setColumnWidth(5, 300);
		this._grdBalances.setColumnWidth(6, 100);
		this._grdBalances.setColumnWidth(7, 60);
		

		this._grdBalances.setWidth(950);
		this._grdBalances.setHeight(170);
		this._grdBalances.setStatusBarVisible(false);
		this._grdBalances.setColumnVisibilityButtonVisible(false);
		this._grdBalances.setShowCellFocusIndicator(true);

		this._grpOpciones = new qx.ui.groupbox.GroupBox();
			this._grpOpciones.setLayout(new qx.ui.layout.HBox(20).set({alignX:"center"}));

		this._btnAgregar = new qx.ui.form.Button("Agregar");
		this._btnModificar = new qx.ui.form.Button("Modificar");
		this._btnBorrar = new qx.ui.form.Button("Borrar");

		this._grpOpciones.add(this._btnAgregar);
		this._grpOpciones.add(this._btnModificar);
		this._grpOpciones.add(this._btnBorrar);

		this._grpBalance = new qx.ui.groupbox.GroupBox();
		this._grpBalance.setLayout(new qx.ui.layout.Basic());
		
		this._cmbOperacion = new qx.ui.form.ow.ComboBox("Operacion:", [{value:"I", label:"Ingreso"}, {value:"E", label:"Egreso"}], true); 
			this._cmbOperacion.getLabel().setWidth(80); this._cmbOperacion.getCombo().setWidth(120);
		this._txtMonto = new qx.ui.form.ow.TextField("Monto:"); this._txtMonto.getLabel().setWidth(80); this._txtMonto.getText().setWidth(120);
		this._txdFechaOp = new qx.ui.form.ow.DateText("Fecha Op:"); this._txdFechaOp.getLabel().setWidth(80); this._txdFechaOp.getDateText().setWidth(120);
		this._txdFechaCorres = new qx.ui.form.ow.DateText("Correspond. a:"); this._txdFechaCorres.getLabel().setWidth(80); this._txdFechaCorres.getDateText().setWidth(120);
		
		this._cmbMetodoOperacion = new qx.ui.form.ow.ComboBox("Metodo de Operacion:", [{value:'C', label:'Cheque'}, {value:'D', label:'Deposito'}, {value:'E', label:'Efectivo'}]);
			this._cmbMetodoOperacion.getCombo().setWidth(150);
		this._txaObservacionesOp = new qx.ui.form.ow.TextArea("Observaciones de Op:");
			this._txaObservacionesOp.getText().setWidth(270);

		this._txtDestino = new qx.ui.form.ow.TextField("Destino:"); this._txtDestino.getLabel().setWidth(50);
			this._txtDestino.getText().setWidth(220);
		this._txaObservacionesDestino = new qx.ui.form.ow.TextArea("Observaciones Destino:");
			this._txaObservacionesDestino.getText().setWidth(270);
		
		
		var grpAcciones = new qx.ui.groupbox.GroupBox();
			grpAcciones.setLayout(new qx.ui.layout.VBox(5).set({alignX:"center"}));
		
		this._btnGuardar = new qx.ui.form.Button("Guardar");
		this._btnCancelar = new qx.ui.form.Button("Cancelar");
		
		grpAcciones.add(this._btnGuardar);
		grpAcciones.add(this._btnCancelar);
		
		this._grpBalance.add(this._cmbOperacion, {left:10, top:0});
		this._grpBalance.add(this._txtMonto, {left:10, top:30});
		this._grpBalance.add(this._txdFechaOp, {left:10, top:60});
		this._grpBalance.add(this._txdFechaCorres, {left:10, top:90});
		this._grpBalance.add(this._cmbMetodoOperacion, {left:250, top:0});
		this._grpBalance.add(this._txaObservacionesOp, {left:250, top:30});
		this._grpBalance.add(this._txtDestino, {left:550, top:0});
		this._grpBalance.add(this._txaObservacionesDestino, {left:550, top:30});
		
		this._grpBalance.add(grpAcciones, {left:840, top:35});
		
		this.add(this._grdPlanillas, {left:15, top:10});
		this.add(this._grdBalances, {left:15, top:250});
		this.add(this._grpOpciones, {left:380, top:425});
		this.add(this._grpBalance, {left:14, top:248});
		
		this._attachEvents();
		this._initForm();
	},
	members :
	{
		_attachEvents : function ()
		{
			this._grdPlanillas.addListener("click", this._getBalances, this);
			this._grdBalances.addListener("click", this._getBalances, this);
			this._btnAgregar.addListener("execute", this._agregar, this);
			this._btnBorrar.addListener("execute", this._borrar, this);
			this._btnModificar.addListener("execute", this._modificar, this);
			this._btnGuardar.addListener("execute", this._guardar, this);
			this._btnCancelar.addListener("execute", this._cancelar, this);
		},
		_initForm : function ()
		{
			this._grpBalance.setEnabled(false);
			this._grpBalance.setVisibility("hidden");
			this._grdPlanillas.setEnabled(true);
			this._grdBalances.setEnabled(true);
			this._cmbOperacion.setValue("I");
			this._txtMonto.setValue("");
			this._txdFechaOp.setValue("");
			this._txdFechaCorres.setValue("");
			this._cmbMetodoOperacion.setValue("C");
			this._txaObservacionesOp.setValue("")
			this._txtDestino.setValue("");
			this._txaObservacionesDestino.setValue("");
			this._btnGuardar.setUserData("cod_planilla_balance", "");
			var rpc = new qx.io.remote.Rpc().set({timeout:10000, url:"services/", serviceName:"Balances"});
			try
			{
				var result = rpc.callSync("getPlanillas");
				this._grdPlanillas.getTableModel().setData(result);
			}
			catch (ex)
			{
				alert(ex);
			}
			this._grpOpciones.setEnabled(true);
		},
		_agregar : function ()
		{
			if (this._grdPlanillas.getFocusedRow() != null)
			{
				this._grpOpciones.setEnabled(false);
				this._grdPlanillas.setEnabled(false);
				this._grdBalances.setEnabled(false);
				this._grpBalance.setEnabled(true);
				this._grpBalance.setVisibility("visible");
				this._cmbOperacion.focus();
			}
			else
			{
				alert("Debe seleccionar la planilla en la cual desea Agregar un registro.");
			}
		},
		_borrar : function ()
		{
			if (this._grdBalances.getFocusedRow() != null)
			{
				if (confirm("Esta seguro que desea Borrar el registro seleccionado?"))
				{
					var params = new Object();
					params.cod_planilla_balance = this._grdBalances.getTableModel().getValue(0, this._grdBalances.getFocusedRow());
					var rpc = new qx.io.remote.Rpc().set({timeout:10000, url:"services/", serviceName:"Balances"});
					try
					{
						var result = rpc.callSync("borrarBalance", params);
						this._getBalances();
						this._initForm();
					}
					catch (ex)
					{
						alert(ex);
					}
				}
			}
			else
			{
				alert("Debe seleccionar el registro que desea Borrar.");
			}
		},
		_modificar : function ()
		{
			if (this._grdBalances.getFocusedRow() != null)
			{
				var params = new Object();
				params.cod_planilla_balance = this._grdBalances.getTableModel().getValue(0, this._grdBalances.getFocusedRow());
				var rpc = new qx.io.remote.Rpc().set({timeout:10000, url:"services/", serviceName:"Balances"});
				try
				{
					var result = rpc.callSync("getBalanceSele", params);
					this._btnGuardar.setUserData("cod_planilla_balance", params.cod_planilla_balance);
					
					this._cmbOperacion.setValue(result.operacion); 
					this._txtMonto.setValue(result.monto);
					
					if (result.fecha_op == '00/00/0000')
						this._txdFechaOp.getDateText().getChildControl("textfield").setValue("");
					else
						this._txdFechaOp.setValue(result.fecha_op);
						
					if (result.fecha_corres == '00/00/0000')
						this._txdFechaCorres.getDateText().getChildControl("textfield").setValue("");
					else
						this._txdFechaCorres.setValue(result.fecha_corres);
					
						
					this._cmbMetodoOperacion.setValue(result.metodo_op);
					this._txaObservacionesOp.setValue(result.observaciones_op);
					this._txtDestino.setValue(result.destino); 
					this._txaObservacionesDestino.setValue(result.observaciones_dest);
				
					this._grpOpciones.setEnabled(false);
					this._grdPlanillas.setEnabled(false);
					this._grdBalances.setEnabled(false);
					this._grpBalance.setEnabled(true);
					this._grpBalance.setVisibility("visible");
					if (result.estado == 'R')
					{
						this._btnGuardar.setEnabled(false);
						alert("El registro seleccionado se encuenta Rendido. No se permiten modificaciones.");
					}
					else
					{
						this._btnGuardar.setEnabled(true);
					}
					this._cmbOperacion.focus();
				}
				catch (ex)
				{
					alert(ex);
				}
				
			}
			else
			{
				alert("Debe seleccionar el registro que desea Modificar.");
			}
		},
		_guardar : function ()
		{
			 if (this._txtMonto.getValue() != "")
			 {
			 	var params = new Object();
				params.cod_planilla_cobro = this._grdPlanillas.getTableModel().getValue(0, this._grdPlanillas.getFocusedRow());
				params.operacion = this._cmbOperacion.getValue(); 
				params.monto = this._txtMonto.getValue();
				params.fecha_op = this._txdFechaOp.getValueToSQL();
				params.fecha_corres = this._txdFechaCorres.getValueToSQL();
				params.metodo_op = this._cmbMetodoOperacion.getValue();
				params.observaciones_op = this._txaObservacionesOp.getValue();
				params.destino = this._txtDestino.getValue(); 
				params.observaciones_dest = this._txaObservacionesDestino.getValue();
				
				if (this._btnGuardar.getUserData("cod_planilla_balance") == "")
				{
					params.op = 'alta';
				}
				else
				{
					params.op = 'modi';
					params.cod_planilla_balance = this._btnGuardar.getUserData("cod_planilla_balance");
				}
				var rpc = new qx.io.remote.Rpc().set({timeout:10000, url:"services/", serviceName:"Balances"});
				try
				{
					var result = rpc.callSync("guardarBalance", params);
//					this._cancelar();
					this._getBalances();
					this._initForm();
//					this._grpBalance.setEnabled(true);
				}
				catch (ex)
				{
					alert(ex);
				}
			 }
			 else
			 {
			 	alert("Debe especificar el Monto!");
			 }
		},
		_cancelar : function ()
		{
			this._initForm();
		},
		_getBalances : function ()
		{
			if (this._grdPlanillas.getFocusedRow() != null)
			{
				var params = new Object();
				params.cod_planilla_cobro = this._grdPlanillas.getTableModel().getValue(0, this._grdPlanillas.getFocusedRow());
				var rpc = new qx.io.remote.Rpc().set({timeout:10000, url:"services/", serviceName:"Balances"});
				try
				{
					var result = rpc.callSync("getBalances", params);
					this._grdBalances.getTableModel().setData(result);
				}
				catch (ex)
				{
					alert(ex);
				}
			}
		}
	}
});